#ifndef __IntroState_H__
#define __IntroState_H__

#include <Ogre.h>

#include "GameState.h"

class IntroState : public GameState
{
public:
	void enter();
	void exit();

	void pause();
	void resume();

	bool keyPressed(const OIS::KeyEvent &arg);
	bool keyReleased(const OIS::KeyEvent &arg);

	bool mouseMoved( const OIS::MouseEvent &arg );
	bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id );
	bool mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id );

	bool frameStarted(const Ogre::FrameEvent& evt);
	bool frameEnded(const Ogre::FrameEvent& evt);

	void createScene();
	void setupEventHandlers();
	bool handleQuit(const CEGUI::EventArgs& e);
	bool handlePlay(const CEGUI::EventArgs& e);

	void drawSprites();

	static IntroState* getInstance() { return &mIntroState; }

protected:
	IntroState();

	Ogre::Root *mRoot;
	Ogre::SceneManager* mSceneMgr;
	Ogre::Viewport* mViewport;
	DeviceManager* mDeviceManager;
	GUIManager* mGUIManager;
	OIS::Keyboard* mKeyboard;
	OIS::Mouse* mMouse;
	Ogre::Camera* mCamera;
	
	bool mExitGame;
	bool mGoToNet;

	Ogre2dManager* spriteManager;

private:
	static IntroState mIntroState;
};

#endif